home *** CD-ROM | disk | FTP | other *** search
- IF1
- INCLUDE MACRO.LIB
- ENDIF
- CODE SEGMENT PARA PUBLIC
- ASSUME CS:CODE,DS:CODE,ES:CODE
- ORG 100H
- START PROC NEAR
- MOV DL,DS:5CH
- MOV AL,DL
- OR AL,AL
- JNZ NOTDEF
- PUSH DX
- DOS 25
- POP DX
- INC AL
- NOTDEF: ADD AL,40H
- MOV DRIVE,AL
- DOS 54
- INC AX
- JNZ OKDRV
- CALL DSPLY
- DB 'Bad drive',13,10,'$'
- OKDRV: DEC AX
- MOV SECUNT,AX
- MOV AVAUNT,BX
- MOV BYTSEC,CX
- MOV TOTUNT,DX
- SUB DX,DX
- MUL CX
- MOV BYTUNT,AX
- SUB DX,DX
- MUL BX
- MOV BX,10000
- DIV BX
- MOV AVABYT,DX
- MOV AVABYT+2,AX
- MOV AX,BYTUNT
- SUB DX,DX
- MUL TOTUNT
- DIV BX
- MOV TOTBYT,DX
- MOV TOTBYT+2,AX
- MOV AX,BYTUNT
- MOV BX,1024
- SUB DX,DX
- MOV CX,10000
- DIV BX
- MOV BYTKB,AX
- MOV BX,AX
- SUB DX,DX
- MOV AX,AVAUNT
- CALL FIXIT
- MOV AVAKB,DX
- MOV AVAKB+2,AX
- MOV AX,TOTUNT
- SUB DX,DX
- CALL FIXIT
- MOV TOTKB,DX
- MOV TOTKB+2,AX
- MOV SI,OFFSET AVAUNT
- PUSH SI
- MOV DI,OFFSET PAU1
- CALL DSPVAL
- POP SI
- MOV DI,OFFSET PAU2
- CALL DSPVAL
- MOV DI,OFFSET PTU
- CALL DSPVAL
- MOV DI,OFFSET PBU
- CALL DSPVAL
- MOV DI,OFFSET PBK
- CALL DSPVAL
- MOV DI,OFFSET PAK
- CALL BIGDSP
- MOV DI,OFFSET PTK
- CALL BIGDSP
- MOV DI,OFFSET PAB
- CALL BIGDSP
- MOV DI,OFFSET PTB
- CALL BIGDSP
- MOV AX,BYTKB
- OR AX,AX
- JNZ NOFKB
- MOV WORD PTR PBK+4,' '
- NOFKB: CALL DSPLY
- SPAMSG DB 'Space on drive '
- DRIVE DB ' :',13,10,' '
- PAU1: DB 5 DUP(?)
- DB ' of '
- PTU: DB 5 DUP(?)
- DB 11 dup(' ')
- PBU: DB 5 DUP(?)
- DB ' byte blocks or',13,10
- PAK: DB 9 DUP(?)
- DB 'K of '
- PTK: DB 9 DUP(?)
- DB 'K in '
- PAU2: DB 5 DUP(?)
- DB ' '
- PBK: DB 5 DUP(?)
- DB 'K blocks or',13,10
- PAB: DB 9 DUP(?)
- DB ' of '
- PTB: DB 9 DUP(?)
- db 18 dup(' ')
- DB 'bytes',13,10,'$'
- DSPLY: POP DX
- DOS 9
- RET
- FIXIT: OR BX,BX
- JZ FIXIT1
- MUL BX
- DIV CX
- RET
- FIXIT1: PUSH BX
- MOV BX,1024
- FIXIT2: SHR AX,1
- SHR BX,1
- CMP BX,BYTUNT
- JNZ FIXIT2
- MOV DX,AX
- SUB AX,AX
- POP BX
- RET
-
- BIGDSP: CLD
- MOV AX,' '
- STOSW
- STOSW
- PUSH DI
- CALL DSPVAL
- POP DI
- LODSW
- OR AX,AX
- JZ DSPXIT
- PUSH SI
- PUSH AX
- MOV SI,DI
- FILLX: LODSB
- CMP AL,' '
- JNZ NOFILL
- MOV BYTE PTR -1[SI],'0'
- JMP FILLX
- NOFILL: POP AX
- POP SI
- JMP SHORT DVLP
- DSPVAL: CLD
- MOV AX,' '
- STOSW
- STOSW
- MOV BYTE PTR [DI],'0'
- LODSW
- DVLP: OR AX,AX
- JZ DSPXIT
- SUB DX,DX
- MOV BX,10
- DIV BX
- OR DL,30H
- MOV [DI],DL
- DEC DI
- JMP DVLP
- DSPXIT: RET
- SECUNT LABEL WORD
- BYTSEC EQU SECUNT+2
- AVAUNT EQU BYTSEC+2
- TOTUNT EQU AVAUNT+2
- BYTUNT EQU TOTUNT+2
- bytkb EQU BYTUNT+2
- avakb EQU BYTKB+2
- totkb EQU AVAKB+4
- AVABYT EQU TOTKB+4
- TOTBYT EQU AVABYT+4
- START ENDP
- CODE ENDS
- END START
- QU BYTUNT+2
- avakb EQU BYTKB+2
- totkb EQU AVAKB+4
- AVABYT EQU TOTKB+4
- TOTBYT EQU AVABYT+4
- START ENDP
- CODE ENDS
-